// vuex的权限模块
import { constantRoutes, asyncRoutes } from '@/router'

const state = {
  routes: constantRoutes // 所有人默认拥有静态路由
}
const mutations = {
  // newRoutes可以认为是 用户登录 通过权限所得到的动态路由的部分
  setRoutes(state, newRoutes) {
    // 应该是每次更新 都应该在静态路由的基础上进行追加
    state.routes = [...constantRoutes, ...newRoutes]
  }
}
const actions = {
  // 这个menus是从用户数据里面得到的他里面是和路由的name匹配的,匹配到的就是可以访问的
  filterRoutes(context, menus) {
    const routes = []
    menus.forEach(item => {
      //  这个认为找到了标识一样的路由
      routes.push(...asyncRoutes.filter(route => route.name === item))
    })
    // 执行到这里的时候 routes就已经是 和menus标识关联完成的路由了  routes相当于完成筛选之后的动态路由
    context.commit('setRoutes', routes)
    return routes // 将数据写入 vuex  return的作用是将数据返回 供 去做 addRoutes使用
  }
}
export default {
  namespaced: true,
  state,
  mutations,
  actions
}
